﻿#include <string>
#include <fstream>
#include <iostream>
#include <Windows.h>
#include <urlmon.h>
#include <boost/filesystem.hpp>
#include "Exception.h"

#pragma comment(lib, "urlmon.lib")
#pragma comment(lib, "wininet.lib")
#pragma once

namespace BB
{
	class BBHtml
	{
	protected:

		std::wstring _site_addr; // 다운로드할 사이트 주소
		std::wstring _file_name; // 그 내용을 다운로드 할 파일 이름
		std::wifstream _file_io; // 파일에서 내용을 받기 위한 스트림

	public:
		BBHtml(std::wstring site_addr, std::wstring file_name) : _site_addr (site_addr) , _file_name(file_name)
		{
			if(file_name.empty()) throw Exception(Exception::SITE_PATH_ERROR);
			
			boost::filesystem::path file_path(file_name);
			if(!boost::filesystem::exists(file_path))
			{
				if(!boost::filesystem::exists(file_path.branch_path()))
					boost::filesystem::create_directory(file_path.branch_path());
			}

			HRESULT down_result = URLDownloadToFile(NULL, _site_addr.c_str(), _file_name.c_str(), 0, NULL);
			if(down_result != S_OK) throw Exception(Exception::SITE_PATH_ERROR);

			std::wcout << _file_name << std::endl;
			_file_io.open(_file_name.c_str());
		}

		std::wifstream& get_file() { return _file_io; }
		std::wstring file_name() { return _file_name; }
		~BBHtml() { _file_io.close(); }
	};
}